/* noImplicitAny 禁用隐式的any*/
// function add(a: number, b: number) {
//     return a + b;
// }

/* strictNullChecks 禁止null和undefined赋值给其它类型*/
// let age: number = undefined;
// let obj: object = null;

/* strictFunctionTypes 禁用函数参数双向协变检查*/
// class Animal {
//     private legs: number = 4;
// }
// class Dog extends Animal {
//     private master: object = {};
// }
// interface Comparer<T> {
//     compare: (a: T, b: T) => number;
// }

// let animalComparer: Comparer<Animal>;
// let dogComparer: Comparer<Dog>;

// // 狗一定有主人 可能用于比较 动物则不然
// animalComparer = dogComparer; // Error
// dogComparer = animalComparer; // Ok

/* strictPropertyInitialization(noImplicitAny必须同时开启) 类的属性值必须初始化 */
// class Animal {
//     private legs: number;
// }
// class Dog extends Animal {
//     private master: object;
// }

/* noImplicitThis */
// function fn() {
//     console.log(this);
// }
// class Dog {
//     private master: object;
//     constructor(master: object) {
//         this.master = master;
//     }
// }

/* noImplicitReturns 不是函数的所有返回路径都有返回值时报错*/
// function calc(a:number, b:number, op): number {
//     switch (op) {
//         case "+":
//             return a + b;
//         default:
//             break;
//     }
// }